MySQL IF THEN 在 WHERE 子句中
全部标签 好的,我们开始吧...我有一个访问非常抽象数据库的选择查询。我当前的查询查看了5个表(使用6个“AND”来完成……不好玩)并返回符合所有条件的任何记录,这是应该的。我的问题是:我能否在当前查询中添加一些内容,基本上是说“如果记录匹配所有这些,但不匹配所有这些”.示例:我当前的查询:$query="SELECTs.state_nameFROM`tbl_records`r,`tbl_states`s,`tbl_events`e,`tbl_fields`f,`tbl_field_values`vWHEREs.state_id=r.state_idANDf.field_id='$field_i
我试图弄清楚如何在有LEFTOUTERJOIN的地方允许可选的AND语句,因为在查看记录时该表是可选的。但是,我有一个问题,就是没有文件,在WHERE语句中,像这样:SELECTrec.record_id,rec.record_name,f.file_name,f.file_idFROM(recordsrecLEFTOUTERJOINfilesfONf.record_id=rec.record_id)WHERErec.record_id=4928ANDf.file_approved=1当我删除ANDf.file_approved=1时,它会返回一条记录,但当我离开它时,它不会返回任何记
我有一个相当简单的表,其中包含大约一百万行。id|my_col|other1|other2|...此表中大约有15k个不同的my_col值,我在my_col上有一个索引。我有一组7kmy_col值需要从该表中删除。在SQL中做什么更有效(我目前正在使用MySQL,但将来可能会移植到MSSQL)。是a)在我的java应用程序代码中,遍历所有my_col值并在每个值上调用sqldelete。for(Stringmy_colValue:listMyCol){[deletefrommy_tablewheremy_col=my_colValue]}或b)使用“wherein”子句构建包含所有这些
我运行了以下查询,它应该有一个where子句但我忘了添加它:UPDATEtblFormElementInstancesasfeiJOINtblFormElementsasfeusing(intFormElementId)SETfei.intStep=1ANDfei.intDivisionId=1ORfei.intDivisionIdISNULL);MySQL返回以下消息:--查询成功,影响42行(0.06秒)--匹配行数:94更改数:42警告数:0我原以为它会抛出一个语法错误,但它并没有。此外,该表中有96行,具有不同的intDivisionIds(即不仅仅是1或NULL),这表明一些
我在MySql数据库中有三个表,我将它们加入查询以获取ID/值对。|A|B|C||--------|--------------|---------------||id|id|id||name|fooId|attributeId||desc|value|displayIndex||...|attributeId|...|我现在拥有的是:SELECTC.id,B.valueFROMA,B,CWHEREA.id=B.attributeIdANDA.id=C.attributeIdANDB.fooId=25ORDERBYC.displayIndex所以基本上我们通过A连接B和C。过去C表中的
在MySQL中,可以在SELECT子句中创建的GROUPBY子句中使用别名(参见MySQLReference)。我只是想知道为什么不能在GROUPBY中创建别名并在SELECT中使用它,它遵循SELECT语句的执行顺序。换句话说,为什么下面是不合语法的?SELECTregion,SUM(population)FROMpopulation_us_statesGROUPBYCASEstate_nameWHEN'CT'THEN'NewEngland'WHEN'RI'THEN'NewEngland'WHEN'MA'THEN'NewEngland'WHEN'ME'THEN'NewEngland'
当我在MySQL中运行两条语句时,我感到很惊讶SELECT*FROMjobsWHEREsalary_max=1000和SELECT*FROMjobsWHEREsalary_max='1000'我只是想知道为什么MySQL可以处理文本和数字相同,并返回相同的结果。你能为我解释一下吗? 最佳答案 MySQL自动转换表达式中不兼容的类型,使它们兼容。在MySQLdocumentation中进行了讨论. 关于MySQL-WHERE子句中的数字和文本,我们在StackOverflow上找到一个类似
我有一个包含18列的表的数据库,其中第二列称为“desc”。我想删除在“desc”下具有特定值的每一行。我正在使用这段代码:DELETEFROMitemsWHEREdesc='Swapthisnoteatanybankfortheequivalentitem.'在PHPMYADMIN中使用这个命令给我这个错误:#1064-YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'desc='Swapthisnoteatanyb
我现在放弃并通过其他方式对其进行排序,但是因为“好奇害死猫”,我试图弄清楚如何在INwhere语句中使用mysql查询@variables:因此,从这里:SELECT*FROMtable1WHEREtable1.IDIN(794,758)尝试包含一个变量,这会返回一个语法错误:SET@variousids="(794,758)";SELECT*FROMtable1WHEREtable1.IDIN@variousids这只返回第一个值:SET@variousids="794,758";SELECT*FROMtable1WHEREtable1.IDIN(@variousids)我尝试了不同
我有一个存储用户的表。每个用户都有一个ID、一个Name和一个AccessLevel。三种可能的访问级别是Administrator、Manager和SimpleUser。我想要的是根据AccessLevel值有条件地从此表中进行选择。我演示了以下逻辑:如果用户是管理员,则选择所有用户(管理员、经理、简单用户)否则,如果用户是Manager,则选择所有Manager和所有SimpleUsers否则,如果用户是SimpleUser,则只选择他自己这可能吗? 最佳答案 ProvidingAccessLevel是一个整数,随着实际访问级别